From 5942fee240b0db8bb5325d1138ed4511aaf3ba02 Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Tue, 21 Feb 2012 03:27:51 +0100 Subject: [PATCH] gdk: Let implicit touch grabs coexist with an implicit pointer grab Create the backing GdkTouchGrabInfo for touches even if the pointer emulating touch sequence is already holding an implicit grab on a window that didn't select for touch events. --- gdk/gdkwindow.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/gdk/gdkwindow.c b/gdk/gdkwindow.c index e05a6ec6e0..a6072da9ef 100644 --- a/gdk/gdkwindow.c +++ b/gdk/gdkwindow.c @@ -9485,6 +9485,7 @@ proxy_button_event (GdkEvent *source_event, GdkWindow *parent; GdkEvent *event; GdkPointerWindowInfo *pointer_info; + GdkDeviceGrabInfo *pointer_grab; guint state; guint32 time_; GdkEventType type; @@ -9510,11 +9511,14 @@ proxy_button_event (GdkEvent *source_event, sequence = gdk_event_get_event_sequence (source_event); pointer_info = _gdk_display_get_pointer_info (display, device); + pointer_grab = _gdk_display_has_device_grab (display, device, serial); if ((type == GDK_BUTTON_PRESS || type == GDK_TOUCH_BEGIN) && !source_event->any.send_event && - _gdk_display_has_device_grab (display, device, serial) == NULL) + (!pointer_grab || + (type == GDK_TOUCH_BEGIN && pointer_grab->implicit && + !_gdk_event_get_pointer_emulated (source_event)))) { pointer_window = _gdk_window_find_descendant_at (toplevel_window, -- 2.30.2